package org.szy.monitor.service;

import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import org.noear.solon.core.handle.Context;
import org.szy.core.common.entity.LoginUser;
import org.szy.core.common.enums.UserTypeEnum;
import org.szy.core.common.page.QueryPage;
import org.szy.core.common.service.BaseService;
import org.szy.monitor.entity.UserOnline;
import org.szy.monitor.param.UserOnlineQueryParam;

import java.time.LocalDateTime;

/**
 * 在线用户记录Service接口
 *
 * @author wangbuhao
 * @since 2023-06-30 17:41:26
 **/
public interface UserOnlineService extends BaseService<UserOnline> {

    /**
     * 获取在线用户记录查询Wrapper
     *
     * @author wangbuhao
     * @since 2023-06-30 17:41:26
     */
    QueryWrapper qwByQuery(UserOnlineQueryParam param);

    /**
     * 获取在线用户记录分页
     *
     * @author wangbuhao
     * @since 2023-06-30 17:41:26
     */
    Page<UserOnline> page(QueryPage<UserOnline> page, UserOnlineQueryParam param);

    /**
     * 保存或设置用户
     *
     * @param userId       用户标识
     * @param account  用户账号
     * @param nickName 用户昵称
     */
    void online(LoginUser loginUser);

    /**
     * 设置用户离线
     *
     * @param token 登录后的用户标识
     */
    boolean offline(String token);

    /**
     * 同步活动时间
     *
     * @param token    登录标识
     * @param datetime 时间
     */
    void syncActivityTime(String token, LocalDateTime datetime);
}
